#ifndef NANE_FILEARCHIVE_H
#   define  NANE_FILEARCHIVE_H

#   include "nane/core/SubSystemProduct.h"
#   include "nane/core/crt/FileSystem.h"

namespace nane
{
    class FileArchive
        : public SubSystemProduct
    {
    protected:
        class Implementation;
        friend class FileArchiveSystem;

    public:
        FileArchive( const NullType& = NullPtr );
        FileArchive( Implementation* _impl );
        FileArchive( const FileArchive& _other );

    public:
        ReadFilePtr OpenFile( const char* _filename );
        
    private:
        Implementation* m;
    };
}   // namespace nane

#endif  // NANE_FILEARCHIVE_H
